/**
 * 
 */
package at.ac.tuwien.vpsbcm.spielzeugfabrik.space;

import java.io.Serializable;
import java.util.Arrays;

import org.mozartspaces.capi3.Queryable;

/**
 * @author Andreas Wolf
 *
 */
@Queryable(autoindex = true)
public class Lokomotive implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 975272009104921302L;
	private Integer MonteurID;
	private Integer LokID;
	private Integer[][] BauteilIDs;
	private Boolean Colored;
	private String Color;
	private Integer LackiererSchornsteinID;
	private Integer LackiererGehaeuseID;
	private Integer LogistikerID;
	private Integer TesterID;
	private Integer AuftragID;
	
	public Lokomotive (Integer MonteurID, Integer LokID, Integer[][] BauteilIDs, Boolean Colored, String Color, Integer LackiererSchornsteinID, Integer LackiererGehaeuseID) {
		this.setMonteurID(MonteurID);
		this.setLokID(LokID);
		this.setBauteilIDs(BauteilIDs);
		this.setColored(Colored);
		this.setColor(Color);
		this.setLackiererGehaeuseID(LackiererGehaeuseID);
		this.setLackiererSchornsteinID(LackiererSchornsteinID);
		this.setLogistikerID(null);
		this.setTesterID(null);
		this.setAuftragID(null);
	}

	public Integer getMonteurID() {
		return MonteurID;
	}

	public void setMonteurID(Integer monteurID) {
		MonteurID = monteurID;
	}

	public Integer getLokID() {
		return LokID;
	}

	public void setLokID(Integer lokID) {
		LokID = lokID;
	}

	public Integer[][] getBauteilIDs() {
		return BauteilIDs;
	}

	public void setBauteilIDs(Integer[][] bauteilIDs) {
		BauteilIDs = bauteilIDs;
	}

	public Boolean getColored() {
		return Colored;
	}

	public void setColored(Boolean colored) {
		Colored = colored;
	}

	public String getColor() {
		return Color;
	}

	public void setColor(String color) {
		Color = color;
	}

	public Integer getLackiererSchornsteinID() {
		return LackiererSchornsteinID;
	}

	public void setLackiererSchornsteinID(Integer lackiererSchornsteinID) {
		LackiererSchornsteinID = lackiererSchornsteinID;
	}

	public Integer getLackiererGehaeuseID() {
		return LackiererGehaeuseID;
	}

	public void setLackiererGehaeuseID(Integer lackiererGehaeuseID) {
		LackiererGehaeuseID = lackiererGehaeuseID;
	}
	
	public String toString () {
		String s = new String(), c = "";
		if (this.Colored) {
			c = this.Color;
		}
		s = String.format("(%d,  %d), %s",this.MonteurID, this.LokID, c);  
		return s;		
	}
	
	public String toStringFertige () {
		String s, laksids, lakgids, ids, c = "-", auftrag = "";
		if (this.Colored) {
			c = this.Color;
		}
		if (this.LackiererGehaeuseID == null) {
			lakgids = "-";			
		} else {
			lakgids = this.LackiererGehaeuseID.toString();
		}
		if (this.LackiererSchornsteinID == null) {
			laksids = "-";			
		} else  {
			laksids = this.LackiererSchornsteinID.toString();
		}
		if (this.AuftragID != null) {
			auftrag = String.format(" <%d>", this.AuftragID);
		}
		ids = Arrays.deepToString(this.BauteilIDs);
		s = String.format("(%d,  %d)%s, %s, (%s, %s) %s",this.MonteurID, this.LokID, auftrag, c, laksids, lakgids, ids);  
		return s;
		
	}
	
	public String toStringAusgelieferte () {
		String s, ids, c = "", auftrag = "";
		if (this.Colored) {
			c = this.Color;
		}
		if (this.AuftragID != null) {
			auftrag = String.format(" <%d>", this.AuftragID);
		}
		ids = Arrays.deepToString(this.BauteilIDs);
		s = String.format("(%d, %d, %d,  %d)%s, %s, (%d, %d), %s",this.LogistikerID, this.TesterID, this.MonteurID, this.LokID, auftrag, c, this.LackiererGehaeuseID, this.LackiererSchornsteinID, ids);  
		return s;
		
	}

	public Integer getLogistikerID() {
		return LogistikerID;
	}

	public void setLogistikerID(Integer logistikerID) {
		LogistikerID = logistikerID;
	}

	public Integer getTesterID() {
		return TesterID;
	}

	public void setTesterID(Integer testerID) {
		TesterID = testerID;
	}

	public Integer getAuftragID() {
		return AuftragID;
	}

	public void setAuftragID(Integer auftragID) {
		AuftragID = auftragID;
	}
	
}
